package com.farm.system.dao;

import com.farm.system.pojo.Menu;
import com.farm.system.pojo.Role;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;

import java.util.Set;

/**
 * 角色DAO
 *
 * @author Chengfei
 * @date 2020/10/11
 */
public interface RoleMapper extends Mapper<Role> {

    /**
     * 添加角色-菜单表
     *
     * @param roleId 角色id
     * @param menuId 菜单id
     */
    @Insert("insert into t_role_menu values(#{roleId},#{menuId})")
    void setRoleIdAndMenuId(@Param("roleId") Integer roleId, @Param("menuId") Integer menuId);

    /**
     * 根据角色id删除角色-菜单表
     *
     * @param roleId 角色id
     */
    @Delete("delete from t_role_menu where rid=#{roleId} ")
    void deleteAssociation(Integer roleId);

    /**
     * 根据角色id查询用户-角色表
     * @param roleId 角色id
     * @return 统计角色被使用的次数
     */
    @Select("select count(0) from t_user_role where rid=#{roleId} ")
    int selectCountByRoleId(Integer roleId);

    /**
     * 根据角色id查询菜单
     * @param roleId 角色id
     * @return 菜单Set集合
     */
    @Select(" select tm.* from t_role_menu trm , t_menu tm where trm.rid=#{roleId} and trm.mid=tm.id  ")
    Set<Menu> findMenuByRoleId(Integer roleId);

}
